package com.example.userclient.custom

import android.content.Context
import android.util.AttributeSet
import android.util.Log
import android.view.ViewGroup


/**
 * 实现监听地图里标记点ji事件
 * */
class MapDetailLayout : ViewGroup {

    constructor (context: Context) : super(context) {

    }
    constructor (context: Context, attributeSet: AttributeSet) :this(context, attributeSet, 0) {

    }
    constructor (context: Context, attributeSet: AttributeSet, defStyle: Int) : super(context, attributeSet, defStyle) {

    }

    override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec)
//        父View提供的参考大小
//        val widthMode = MeasureSpec.getMode(widthMeasureSpec)
//        val widthSize = MeasureSpec.getSize(widthMeasureSpec)
//        val heightMode = MeasureSpec.getMode(heightMeasureSpec)
//        val heightSize = MeasureSpec.getSize(heightMeasureSpec)
        var width = getMySize(100, widthMeasureSpec)
        var height = getMySize(100, heightMeasureSpec)
        Log.i("MapDetailView","custom width is $width, height is $height")
        if (width < height) {
            height = width
        } else {
            width = height
        }

        setMeasuredDimension(width, height)
    }
    private fun getMySize(defaultSize: Int, measureSpec: Int): Int {
        var mySize = defaultSize
        val mode = MeasureSpec.getMode(measureSpec)
        val size = MeasureSpec.getSize(measureSpec)
        Log.i("MapDetailView","MeasureSpec mode is $mode, size is $size")
        when (mode) {
            MeasureSpec.UNSPECIFIED -> {
                //如果没有指定大小，就设置为默认大小
                mySize = defaultSize
            }
            MeasureSpec.AT_MOST -> {
                //如果测量模式是最大取值为size
                //我们将大小取最大值,你也可以取其他值
                mySize = size
            }
            MeasureSpec.EXACTLY -> {
                //如果是固定的大小，那就不要去改变它
                mySize = size
            }
        }
        return mySize
    }

    /**
     * View.java的onLayout方法是空实现:因为子View的位置，
     * 是由其父控件的onLayout方法来确定的。onLayout(int l, int t, int r, int b)中的参数l、t、r、b都是相对于其父 控件的位置。
     * 自身的mLeft, mTop, mRight, mBottom都是相对于父控件的位置。

     *在ViewGroup#onLayout()跟View#onLayout()都是空实现，交给继承者根据自身需求去定位。
     *
     * 总结：只有在测量过程中和布局计算时，才用getMeasuredWidth()。在layout之后，用getWidth()来获取宽度。
     * */
    override fun onLayout(changed: Boolean, l: Int, t: Int, r: Int, b: Int) {


    }

    /**https://www.jianshu.com/p/2a0debdf1329
     * 绘制背景。

    如果必要的话,保存当前canvas

    绘制View的内容

    绘制子View

    如果必要的话,绘画边缘重新保存图层

    画装饰(例如滚动条)
     * */
}